package assembler;

public class Registro {

	    private boolean h;  // seccion alta de los 16 bits menos significativos
	    private boolean l;  // seccion baja de los 16 bits menos significativos
	    private String registroCompleto32;
	    private String parteMenosSignificativa16;
	    private String ochoBitsMasSignificativos;
	    private String ochoBitsMenosSignificativos;

	    
	   
	    public Registro(boolean h, boolean l, String registroCompleto32,
				String parteMenosSignificativa16,
				String ochoBitsMasSignificativos,
				String ochoBitsMenosSignificativos) {
			super();
			this.h = h;
			this.l = l;
			this.registroCompleto32 = registroCompleto32;
			this.parteMenosSignificativa16 = parteMenosSignificativa16;
			this.ochoBitsMasSignificativos = ochoBitsMasSignificativos;
			this.ochoBitsMenosSignificativos = ochoBitsMenosSignificativos;
		}

	    
		public boolean isH() {
			return h;
		}

		public void setH(boolean h) {
			this.h = h;
		}

		public boolean isL() {
			return l;
		}

		public void setL(boolean l) {
			this.l = l;
		}

		public String getRegistroCompleto32() {
			return registroCompleto32;
		}

		public void setRegistroCompleto32(String registroCompleto32) {
			this.registroCompleto32 = registroCompleto32;
		}

		public String getParteMenosSignificativa16() {
			return parteMenosSignificativa16;
		}

		public void setParteMenosSignificativa16(String parteMenosSignificativa16) {
			this.parteMenosSignificativa16 = parteMenosSignificativa16;
		}

		public String getOchoBitsMasSignificativos() {
			return ochoBitsMasSignificativos;
		}

		public void setOchoBitsMasSignificativos(String ochoBitsMasSignificativos) {
			this.ochoBitsMasSignificativos = ochoBitsMasSignificativos;
		}

		public String getOchoBitsMenosSignificativos() {
			return ochoBitsMenosSignificativos;
		}

		public void setOchoBitsMenosSignificativos(String ochoBitsMenosSignificativos) {
			this.ochoBitsMenosSignificativos = ochoBitsMenosSignificativos;
		}

	    public String get32bits(){
	        if (h && l){
	            h = false;
	            l = false;
	            return registroCompleto32;
	        }
	        return null;
	    }

	    public String get16bits(){
	        if (h && l){
	            h = false;
	            l = false;
	            return parteMenosSignificativa16;
	        }
	        return null;
	    }

	    public String get8bits(){
	        if (l){
	            l = false;
	            return ochoBitsMenosSignificativos;
	        }
	        if (h){
	            h = false;
	            return ochoBitsMasSignificativos;
	        }
	        return null;
	    }
		
		
		public boolean vaciar(String parteaVaciar){
	        if (parteaVaciar.equals(registroCompleto32) ||parteaVaciar.equals(parteMenosSignificativa16)){
	            h = true;
	            l = true;
	            return true;
	        }
	        else if (parteaVaciar.equals(ochoBitsMenosSignificativos)){
	            l = true;
	            return true;
	        }
	        else if (parteaVaciar.equals(ochoBitsMasSignificativos)){
	            h = true;
	            return true;
	        }
	        return false;
	    }
	
}
